{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f2ad4c37",
   "metadata": {},
   "source": [
    "## New Huguenot Analysis\n",
    "\n",
    "### Brandon Zhao"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "97036d5a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Getting the data\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import statsmodels.api as sm\n",
    "from statsmodels.formula.api import ols\n",
    "from statsmodels.graphics.regressionplots import *\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import scipy\n",
    "sns.set_theme()\n",
    "\n",
    "df = pd.read_csv(\"Huguenots_Coding.csv\")\n",
    "df = pd.get_dummies(df, columns = [\"population_loss\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1bceaa07",
   "metadata": {},
   "source": [
    "Regressions Run:\n",
    "\n",
    "1) Dependent Variable: indicator for whether or not city attitude was a 3\n",
    "\n",
    "   Independent Variable: distance to nearest trade route in km\n",
    "   \n",
    "2) Dependent Variable: indicator for whether or not city attitude was a 3\n",
    "\n",
    "   Independent Variables: Population Loss Indicator Variables (0 for under 40%, 1 for over 40%)\n",
    "   \n",
    "3) Dependent Variable: indicator for whether or not city attitude was a 3\n",
    "\n",
    "   Independent Variable: distance to nearest trade route in km and population loss indicator variables"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0d235cdf",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/raginisrinivasan/opt/anaconda3/lib/python3.9/site-packages/statsmodels/base/model.py:127: ValueWarning: unknown kwargs ['distr']\n",
      "  warnings.warn(msg, ValueWarning)\n"
     ]
    },
    {
     "ename": "ValueError",
     "evalue": "endog must be in the unit interval.",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "Input \u001b[0;32mIn [4]\u001b[0m, in \u001b[0;36m<cell line: 5>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      2\u001b[0m df \u001b[38;5;241m=\u001b[39m df[df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtrade_dist\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;241m.\u001b[39mnotna()]\n\u001b[1;32m      3\u001b[0m df \u001b[38;5;241m=\u001b[39m df[df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcity_att_original\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;241m.\u001b[39mnotna()]\n\u001b[0;32m----> 5\u001b[0m reg \u001b[38;5;241m=\u001b[39m \u001b[43msm\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mLogit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdf\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcity_att_original\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msm\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43madd_constant\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdf\u001b[49m\u001b[43m[\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtrade_dist\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdistr\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mlogit\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39mfit(method \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbfgs\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m      6\u001b[0m \u001b[38;5;28mprint\u001b[39m(reg\u001b[38;5;241m.\u001b[39msummary())\n\u001b[1;32m      8\u001b[0m df \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mread_csv(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mHuguenots_Coding.csv\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
      "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/statsmodels/discrete/discrete_model.py:465\u001b[0m, in \u001b[0;36mBinaryModel.__init__\u001b[0;34m(self, endog, exog, check_rank, **kwargs)\u001b[0m\n\u001b[1;32m    463\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28missubclass\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m, MultinomialModel):\n\u001b[1;32m    464\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m np\u001b[38;5;241m.\u001b[39mall((\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mendog \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m) \u001b[38;5;241m&\u001b[39m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mendog \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m)):\n\u001b[0;32m--> 465\u001b[0m         \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mendog must be in the unit interval.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m    467\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_continuous_ok \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[1;32m    468\u001b[0m             np\u001b[38;5;241m.\u001b[39many(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mendog \u001b[38;5;241m!=\u001b[39m np\u001b[38;5;241m.\u001b[39mround(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mendog))):\n\u001b[1;32m    469\u001b[0m         \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mendog must be binary, either 0 or 1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
      "\u001b[0;31mValueError\u001b[0m: endog must be in the unit interval."
     ]
    }
   ],
   "source": [
    "df = pd.read_csv(\"Huguenots_Coding.csv\")\n",
    "df = df[df['trade_dist'].notna()]\n",
    "df = df[df['city_att_original'].notna()]\n",
    "\n",
    "reg = sm.Logit(df[\"city_att_original\"], sm.add_constant(df[[\"trade_dist\"]]), distr = \"logit\").fit(method = \"bfgs\")\n",
    "print(reg.summary())\n",
    "\n",
    "df = pd.read_csv(\"Huguenots_Coding.csv\")\n",
    "df = df[df['population_loss'].notna()]\n",
    "df = pd.get_dummies(df, columns = [\"population_loss\"])\n",
    "df = df[df['city_att_original'].notna()]\n",
    "\n",
    "reg = sm.Logit(df[\"city_att_original\"], sm.add_constant(df[[\"population_loss_dichotomy\"]]), distr = \"logit\").fit(method = \"bfgs\")\n",
    "print(reg.summary())\n",
    "\n",
    "df = pd.read_csv(\"Huguenots_Coding.csv\")\n",
    "df = df[df['population_loss_dichotomy'].notna()]\n",
    "df = pd.get_dummies(df, columns = [\"population_loss_dichotomy\"])\n",
    "df = df[df['trade_dist'].notna()]\n",
    "df = df[df['city_att_original'].notna()]\n",
    "\n",
    "reg = sm.Logit(df[\"city_att_original\"], sm.add_constant(df[[\"trade_dist\", \"population_loss_dichotomy\"]]), distr = \"logit\").fit(method = \"bfgs\")\n",
    "print(reg.summary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "2368a085",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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mlxfRvU///zzev7551OtH0DmEfaAQubAgQO6efOm6tWrl+ryMmXK6PXXX1diYqIOHz6s1atXa9GiRbrvvvvUoUOHLL9vVFRUivv+++8/+fv7S0r6UXD7UeXkSRDs4ePjIylpUobb3zcuLs5cnhXFixdP8bpSUv25cdmH9evXa968eZo8ebIeeeQRs5f11p5SHx+fFNe7MwzD5vwkLy8vVa1aVdOmTUvxHpn9UR4UFKRu3bpp9erVat++vXm03p51lZW29vLyUqlSpfTOO+9kqs70nDlzRhcvXlT37t1TXe7j46OXXnpJL730kkJDQ/XVV19p2bJlKl++vHm5hlvZ00728PLySvU8xOShtHfSjref05fcVsn7R40aNVSlShV9/fXXiomJUePGjVM9MJQVyQeLbm/7W3vVS5cuneqkO5cvX9Y999xj8zq3hgzDMMweJCl7tnUvLy9ZLJY0t2d7v1O+/vprxcbGasGCBSpevLjNsnHjxmn16tVq06aNub1cuXLFZp2HhobKMAy7ly9atCjVNrvnnnvMQJX832QRERFyd3c3A9ytEhMTNWzYMPn4+GjDhg2677775OTkpE8++cQ8z88eyfXdfk3G06dP68qVK+byl19+OdUZjTPbuwsgCcM4gULEMAy9++678vHxUdu2bVMsP3r0qB544AH98ccfcnJyUt26dTVt2jS5uLiYMwHeehQ8My5fvqw//vjDvP3HH3/owoULatiwoSSpaNGiioiIsPkhePukDOm99z333KMSJUqkmOkveZa5unXrZqluKWkI43fffWczXCksLEzHjx+/o9e116FDh3T33Xfr8ccfN38Q/fHHH7p8+bL5g7dRo0Y6ceKEzpw5Yz5vz549NjXXrVtXFy5cULly5RQYGKjAwEDVqFFDy5cv144dOzJdV/Lw3hkzZpjvY8+6ykpb16tXT5cvX5anp6dZe2BgoDZs2KCvvvoq07VLSRP1uLq6pnrO6OXLl/Xggw9q27ZtkpKGUYaEhKhs2bL6559/Uq3RnnayR506dXTixAn99ddf5n1hYWF6+umndfTo0Ttqx9tnaP36669VuXJlm3Dw6KOP6rvvvtOOHTvsGsJpr+Qeo1t78y9evKgLFy6Yt+vXr68TJ07YDDk8fvy4ze3UXufw4cM2E8Jkx7ZetGhRVatWLcV3yo8//qhr166Z23NG34nr169X9erV1bZtWzVq1MjmX4cOHbRr1y79+++/qlmzplxcXFJM5vPyyy/rgw8+yHB5rVq15OrqqoiICJt95MSJE1q0aJHNc25/je+++04NGzY0g/Stn+ny5cs6e/asevToIX9/f3NZarP9pufee++Vj49PivX/1ltvadasWebyixcv2tQfGRmpt956K0dGUQCFAT17gIOKiorS4cOHJSVN+HHx4kWtXr1a+/fv1+zZs1MdqnPfffepaNGiCgkJ0ciRI1W8eHGtX79eFovFnGXO29tb//77r3766adUh9Slxc3NTc8995zGjh0rq9Wq2bNnq2rVqmrXrp2kpEkCVqxYoVdffVUdOnTQ3r17U0wp7u3trevXr+vbb79NceTX2dlZI0eO1NSpU1W8eHG1bt1ax44d04IFC9S+fXuzBzErhg4dql69emnw4MHq16+frl27pnnz5qlcuXK5cp2swMBAff7551q4cKEaNmyosLAwLVq0SBaLRTdu3JAkde7cWUuXLtXQoUM1ZswY3bhxQ3PnzrUZ4titWzetWLFCAwYM0NNPPy0fHx+tXLlS33zzjR599NFM11WyZEkNGTJEs2fP1ooVKzRw4EC71lVW2rply5YKDAzU008/rZEjR6pMmTL65ptv9Mknn+jVV19Nt84bN26Y+0JCQoIiIiK0adMmbd26VSEhITbnxt362SpVqqRp06YpJiZGZcqU0Y4dO/TXX3+Z573dXqM97WSPxx57TMuXL9fQoUM1cuRIOTs7mxOFNG7cWLVr185yO+7Zs0czZ85U8+bNtW3bNm3fvl1z5861eUynTp00d+5cubu7pzjH704UL15ctWrV0tKlS1WmTBk5Oztr4cKF8vb2Nh/z6KOPasmSJRo6dKhGjx5tzgxssVjMIBIQEKC77rpLb731llxcXBQdHa358+fbnFecXdv6qFGjNHz4cD377LPq2rWr/vnnH82ZM0d16tRR8+bNJaXcDpKHSkpJE5vs37/fvITK7R599FEtXbpUa9as0YgRI9SrVy8tXrzYPJdwy5YtCg0N1csvv6xSpUqlu7xkyZLq06ePZsyYoatXr6pmzZo6evSo5s6dq9atW6tYsWJmj97q1atVsmRJ1alTR+vXr9exY8f08ccfm3V5e3vr4MGDql+/vmrVqqWyZcvqww8/1P/+9z85OTlp/fr1Zmi7tUc1PS4u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c+dOtWjRIrfKAoCsYxp2AACQj+Va2Dt16pQkacCAAYqMjFSPHj3k7++vSpUqqUKFCpKkjh07auvWrYQ9AAXH/03D7lexpMLDrxH0AABAvpFrYS8qKkpBQUGaNGmSrFar+vbtq0GDBsnX19d8TOnSpXXx4sVMvW6pUsWyu9Rs4evrldclII/Q9oUXbV840e6FF21feNH2hVdBa/tcC3t16tRRnTp1zNvdunXT/PnzVa9ePfM+wzBksWTuisQREdFKTMxfh9J9fb2SjvCj0KHtCy/avnCi3Qsv2r7wou0Lr/zY9k5OlnQ7v3JtNs4DBw5oz5495m3DMFSuXDmFh4eb94WHh6t06dK5VRIAAAAAOKxcC3vXrl3TrFmzFBcXp+joaK1bt07PPfecTp8+rbNnzyohIUEbN25U8+bNc6skAAAAAHBYuTaMs2XLljpy5Ig6d+6sxMREPfHEE6pTp45mzJihUaNGKS4uTi1atFD79u1zqyQAAAAAcFgWwzDy1wlvmcQ5e8hPaPvCi7YvnGj3wou2L7xo+8IrP7Z9vjlnDwAAAACQewh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IByPezNnDlT48ePlyTt3r1bHTt2VNu2bTV37tzcLgUAAAAAHFauhr09e/Zo3bp1kqQbN25owoQJevvtt7V582b9/vvv2rlzZ26WAwAAAAAOK9fCXmRkpObOnauhQ4dKkn799VdVqlRJFSpUkIuLizp27KitW7fmVjkAAAAA4NByLey9/PLLGjNmjLy9vSVJly5dkq+vr7m8dOnSunjxYm6VAwAAAAAOzSU33mT16tUqU6aMgoKCtHbtWklSYmKiLBaL+RjDMGxu26tUqWLZVmd28vX1yusSkEdo+8KLti+caPfCi7YvvGj7wqugtX2uhL3NmzcrPDxcnTp10tWrVxUbG6u//vpLzs7O5mPCw8NVunTpTL92RES0EhON7Cz3jvn6eik8/Fpel4E8QNsXXrR94US7F160feFF2xde+bHtnZws6XZ+5UrYW7Zsmfn/a9eu1b59+/Tqq6+qbdu2Onv2rMqXL6+NGzfqsccey41yAAAAAMDh5UrYS427u7tmzJihUaNGKS4uTi1atFD79u3zqhwAAAAAcCgWwzDy1xjITGIYJ/IT2r7wou0LJ9q98KLtCy/avvDKj22f0TDOXL+oOgAAAAAg5xH2AAAAAMABEfYAAAAAwAER9gAAAADAARH2AAAAAMABEfYAAAAAwAER9gAAAADAARH2AAAAAMABEfYAAAAAwAER9gAAAADAARH2AAAAAMABEfYAAAAAwAER9gAAAADAARH2AAAAAMABEfYAAAAAwAER9gAAAADAARH2AAAAAMABEfYAAAAAwAER9gAAAADAARH2AAAAAMABEfYAAAAAwAER9gAAAADAARH2AAAAAMABEfYAAAAAwAER9gAAAADAARH2AAAAAMABEfYAAAAAwAER9gAAAADAARH2AAAAAMABEfYAAAAAwAER9gAA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MdXloaGh2VoUAAAAAODO2BX23njjjZyuAwAAAACQjewKew0bNkxz2b///pttxQAAAAAAsoddYS8sLEyzZs3SiRMnzHP0DMNQfHy8IiMjGcYJAAAAAPmMXRO0TJo0SVevXtWQIUN05coVDR48WMHBwbp+/bqmT5+e0zUCAAAAADLJrp6933//XStXrlS1atW0fv163XvvvXryySd1zz33aNWqVercuXMOlwkAAAAAyAy7evZcXFzk5eUlSbr33nvNYZtNmjTR8ePHc646AACA/MQiRV236reT4Yq6cVOy5HVBAJA2u8JevXr19MEHH+j69euqUaOGvv32WyUmJurIkSNyd3fP6RoBAADynkUKPXdVIW/v1oTFuxWy6CeFnrtK4AOQb9kV9saPH6/du3fr008/VadOnXTlyhXVr19fY8eO1eOPP57TNQIAAOS5qFir5q86rDhrgiQpzpqg+asOKyrWmseVAUDq7Dpnz8/PT19//bWuX78uDw8PrVmzRvv27ZOPj49q166dwyUCAADkvcjoeDPoJYuzJigyJl7eHq55VBUApM2unr3WrVsrMjJSHh4ekiRPT089+OCDKlOmjIKCgnK0QAAAgPzAx8td7q7ONve5uzrLp6hbHlUEAOlLs2dv8+bN2rFjhyTpr7/+0uTJk1Ocn/f333/LxcWuzkEAAIACzdvDRaN71DaHcrq7Omt0j9ry9nSVjLyuDgBSSjOpNW7cWD/++KN528nJSc7OtkezqlatqpCQkJyrDgAAIL8wpGoVi2vm8CaKtSbI09WZoAcgX0sz7JUsWdK8YHq5cuU0cOBAcxgnAABAoWRI3h6u8qtYUuHh1wh6API1u87ZGzlypH755RdFRERIktatW6enn35a8+fPl9XKDFQAAAAAkN/YFfbeffddjRgxQufPn9fBgwc1ceJElS5dWps3b9bMmTNzukYAAAAAQCbZFfY+//xzzZs3T7Vr19aXX36pOnXqaNq0aZo1a5Y2b96c0zUCAAAAADLJrrAXERGhgIAASdKOHTvUsmVLSZKPj49u3LiRc9UBAAAAALLE7ouqr127VqVKldKlS5fUunVrxcfH6/3331e1atVyukYAAAAAQCbZFfZCQkI0evRoXb16VUOGDFHlypX16quvavv27XrnnXdyusaCwyJFxVr178lwebq7yNvDhVm6AAAAAOQJi2EY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VXXr1lX//v3zumzkEPb5wot93vF98MEHiouL04wZM8z7evXqpe3bt7PfOzh72p793jG1aNFCv/76qzp37ixnZ2e1bdtWwcHBBfbvvcUwDCOviwAAAAAAZC+GcQIAAACAAyLsAQAAAIADIuwBAAAAgAMi7AEAAACAAyLsAQAAAIADIuwBadi4caMCAgK0dOlSm/tjYmK0du1a83ZERIQ2b95s3g4ICNDu3btTXZZZY8eO1fjx47P8/PSEhoaqdevWqlWrlnbu3Jli+d69e3X8+HFJ0tq1a7P9GjLx8fF6++239fDDD6tWrVpq3bq1Zs+erejoaPMxrVq10urVqyWlXO9Zeb/OnTvrv//+kyQdOnRIPXr0UK1atdSuXTutX78+0685cOBAVa9e3XxNe4WGhurAgQOSpJ9//lkBAQG6efNmpt//VlltowsXLiggIMDmX/Xq1fXAAw9o6tSpio+Pv6O6siK5prNnz0qSzp8/rx07dmT59R5//HEtWLDArsfGxMRoypQpatasmRo2bKiRI0fq4sWLGT4vISFBdevWtbnIsiS98cYbCggI0Lfffmtz//PPP68RI0Zk+Lrjx4/X2LFj7ao9LzVv3jzT+6dhGBowYIC5j9tj7dq1CggI0JNPPpnq8h49ethsO7d+h2Sn1atXq1WrVqkuyw/71O3flzm1HlJz9OhR9ezZU7Vq1VLXrl3166+/2v3cPn36pFh3devWVd++fc2/Rxm5/fvjTtz6dzCzbt68qYCAAP3888+SpDFjxuinn36645qAzCLsAWnYuHGjKlWqpHXr1tncv2zZMps/mrNnz9b27dvN27t27VL9+vVTXZafLFiwQJUrV9amTZvUqFGjFMufeuqpTIcYe8XHx6tv377asmWLxo4dq40bN+qVV17R9u3bNWzYMDP4fPHFF+rYsaOklOs9s95//301a9ZM//vf/3T58mU9/fTTCgoK0saNGzVs2DBNnDjRDGD2iIiI0N69e1W2bFlt2LAhU7WMGDFCp0+fliTVqVNHu3btkotL3l72dOXKldq1a5d27dqlb775Rs8//7xWrVqld999N9drKVOmjHbt2qXy5ctLkiZMmKBDhw7lynu//vrr2rdvn9566y19/PHHunHjhoYPH67ExMR0n+fs7Kw6deqk+GG7d+9elS5dWnv37rW5/8iRI2rYsGG2119QJCYmatq0aVn68evq6qpDhw7pypUrNvdfunRJv//+u819t36H5La83Kdu/77MrfUQGxurQYMGqVatWlq7dq3q1aunIUOG2BzEy8hTTz1lrrcff/xR7733nqKjozVy5MgM90Mp5ffHncjOv4PPPPOMXnvttTw5gIbCjbAHpOLq1avatWuXRo4cqePHj+vPP/80l91+acrbb/v6+srNzS3VZfnJtWvXVKNGDZUvX15FihTJ1ff+4IMPdPbsWX300Udq3bq1KlSooGbNmmnJkiU6ePCgvvnmG0lSyZIlzdruZF1ev35dy5cv1xNPPCFJ+vvvv/XQQw9pzJgxqlChgjp37qwqVapkKuxt2bJFlSpVUocOHVIcEMgMNzc3+fr6Zvn52aVEiRLy9fWVr6+vypUrpy5duqhTp04peqRyg7Ozs3x9feXs7Jyr72u1WrVx40aFhISobt268vf312uvvabff//dDOfpadCggU3Yu3btmkJDQzVgwACbsHf58mWdP38+1YMshcHFixf11FNPafv27fL29s7080uWLKmKFSumGJHw3XffqWbNmikem9vfb8nycp+6/fsyt9bD5s2b5erqqvHjx8vPz08TJkyQl5eXtmzZYvdreHh4mOutdOnSqlevnl566SWdPXvWrl62vPr+yEjlypVVtmzZOxrtA2QFYQ9Ixddffy03Nzd16NBBlStXNofDrF27VgsXLtQvv/yigIAALViwQOvWrdOGDRvMIT3JwzjTW5bs9qF3Bw4cUKdOnVSzZk2NGTNGcXFxNnV9++23Cg4OVq1atdSlSxf98MMPaX6GuLg4zZ49Wy1atFDt2rU1dOhQ/fXXX5KShvTs27dPS5YsSXUoUvJ9/fv3txn+tmjRIjVu3Fj169fXjBkzbH5QrFy5Uq1bt1adOnX0+OOPpzt0Z926dXrsscdUokQJm/srVqyojz76SM2aNTPrWL16dYr1vmnTJjVo0MDmCOkPP/ygRo0ayWq1pni/jRs3qnz58ipTpowkqUaNGpo+fbqkpB6G7du36/Tp02ZPS/IwoOThN6nZuHGjGjZsqAcffFDHjh2zOSAgJQ09HDJkiOrUqaPmzZtryZIlkpKGKf3111+aOHGixo8fbzOMc8yYMSmG7E2ePFmjR4+WJP37778aPny4ateurQcffFCzZ89O9SjxwIED9corr9jcN2bMGE2bNi3Nz5MaNzc3mx9MJ06cUN++fVWzZk21adNGS5cutdkGNm3aZG6f3bp1M3vjFixYoKFDh6pPnz5q0KCBfvjhhxTDym5dD7cOwxo/fry5rfbp08eu9bBt2za1a9dOtWvX1rRp0+w+UGAYhhYuXKi6deua91ksFkkyX79Pnz5pDq2uX7++Tpw4oevXr0uS9u3bp3vuuUcdOnTQyZMnbYYQ+/j4KCAgQFLSft+tWzfVrFlTwcHB6Q4pTmsdS9L333+vLl26qGbNmnr44YdtfmD36dNH7777rvr376+aNWuqe/fuOnfunCZOnKg6deqoXbt2Ngc7Mmrrzz//XC1atFC9evX0zjvv2LV+k/3555+qWLGi1qxZIy8vrxTLW7VqleGw29atW+v777+3ue/bb7/VQw89lOK1Vq9ercuXL6tRo0aaN2+euWzw4MHq27evDMOQYRh6++231axZM9WrV08DBw7UmTNnzMdevHhRgwYNUu3atdW1a1dduHAhU585WWb3qXfffVetW7dWjRo19MADD+itt94ylyUkJGj+/Plq1qyZ6tatq2HDhunSpUspvi9vXQ9S0nfe+++/r4ceekg1a9ZU7969dfToUfN1AwICtH79enXs2FF16tRRnz59dO7cObs+35EjR1S3bl05OSX9vLRYLKpbt665nSYPw83KepNkrrv4+Hi99tpraty4sRo1aqRnnnnG3L9uH8Z57do1hYSEqF69emratKkmTZpk09P4559/qnfv3ubpBMlDsVP7O5jRvrpw4UIFBQWpcePGqR4EbNWqlT7//PNMf37gThD2gFRs2LBBzZs3l4uLi1q3bq2NGzfKarWqQ4cOGjBggGrWrKldu3ZpwIABevjhh9WuXbsU5+qktyw1ly9f1pAhQ9S0aVOtX79e9957r9nDJSWdB/HCCy9o8ODB2rBhg3r06KGRI0cqNDQ01debPHmyvvnmG82cOVMrV67UzZs3NWzYMCUkJOiLL75QnTp19NRTT6VaW/J98+bN04ABAyQl/dg5ceKEPv30U02ZMkXLly83z6Pavn273nrrLb344otat26dmjdvrqeeekqXLl1K8do3btzQ2bNnFRgYmGrd9evXT/ED8Pb13qpVK928edNmCNiWLVvUrl07ubq6pnjNH3/8UU2bNk21lsDAQA0bNkydOnUyf+QnDwOqU6dOqjX+9ddfOnz4sFq2bKlatWrJ19fX5g97fHy8Bg4cKBcXF61cuVKvvfaa3n//fX311VdasGCB7r77bo0fP14vvfSSzesGBwdrx44dZrBITEw0A75hGBoxYoSKFy+uNWvWaPbs2dqxY4fmzJmTor6OHTtq27ZtSkhIkJTUs7ljxw4FBwen+nluZxiGfvzxR61fv17t2rUz11Xyj92vvvpKEydO1IcffqiPP/5YkrRnzx6NGzdOTzzxhL766is1atTIZvjW999/r3bt2mnFihU2YSojL730krmtLliwIMP1cPLkST377LN6/PHHtWbNGsXHx9s9BNTNzU3NmjVT0aJFzfs++ugj+fj46L777pOUFFxvb7dkNWvWlLOzs/744w9JSUM4GzVqpLvuuksVK1Y0Dx4cPnxY9evXl8ViUXh4uJ5++ml17NhRGzZs0IgRIzRt2rRUh3+nt4737NmjUaNGqVOnTvryyy/Vs2dPjR071uagy+LFi9W9e3etXbtWV69e1WOPPaa7775bX3zxhSpVqqTXX39dUsZt/eOPP+q1117TmDFj9Pnnn+vw4cN2ndeYrGXLlnrttddUsmTJVJd/8cUX5vdOWlq3bq1du3aZ+0p0dLQOHz6c5nmrJUuW1Pjx4/XBBx/o/Pnz+vLLL3XgwAG99tprslgs+vjjj/Xll19q1qxZWrVqlSpVqqR+/fqZwf2ZZ55RYmKiVq9erUGDBumjjz6y+/NKWdunvvzySy1dulTTpk3T1q1bNWLECL399ttmmy5YsECrVq3StGnTtHr1asXFxSkkJCTF9+XtFi1apKVLl5rf1+XLl9egQYNsAtDChQs1YcIEffTRR/rvv/9S/Z5JTXh4uEqXLm1zX6lSpczto0OHDqnWlJ5Lly5pxowZqlKliu69915J0pw5c3T48GG98847WrFihQzD0JAhQ1I9sDNhwgRduXJFn3zyid555x2dPn1aL774oqSkv7v9+vXTvffeq3Xr1mnMmDF65ZVXdODAgRR/BzPaV1euXKmPPvpIr7/+upYtW6Y1a9akqKVp06Y6fPiwrl69mql1ANwJwh5wm4sXL+rAgQPmEeK2bdvqypUr2rlzp4oUKSJPT0+5uLjI19dXRYsWVZEiReTm5pbih0t6y1KzZcsW+fj46IUXXtC9996rUaNGqXr16ubyDz74QI899pg6d+6sihUr6vHHH1dwcLBWrFiR4rWuXr2qL7/8Ui+99JIaN26sgIAAzZ49W+fOndOPP/6okiVLytXVVR4eHqnWlnxf8eLFzR++Li4umjZtmu6991516NBBVatWNY8Gv//++3r66af10EMPqXLlyho2bJhq1KiR6jl2yX/kUjuin5bb17uHh4dat26trVu3SkoKV8mhKDW///67/Pz8UtxvsVi0atUqvfHGG9q4caOWLVsm6f8PA0o+mny7TZs2ydPTU0FBQXJyclKrVq3MAwKStHv3bvMHir+/v5o1a6aXX35Znp6e8vHxkbOzs4oVK5ZiHST/UN2zZ4+kpJ6h69ev68EHH9TevXt14cIFTZs2TX5+fqpfv75efvllffzxxykmd3nooYcUHR2t/fv3S5J27NihEiVKqHbt2mmu406dOqlOnTqqU6eOatSooQkTJqh///4aOHCgpKQDIMWLF9dzzz2nypUrq0WLFnr22Wf14YcfSpI+++wzPfzww3ryySdVqVIlPf/88+rWrZuioqIkST4+Purdu7eqVq2qYsWKpVnH7by8vMxt1cfHJ8P1sGbNGtWtW1f9+vWTn5+fJk2alOVhsl9//bU++OADjRs3zjyI4OPjk+a26+bmplq1aum3336TlNRbmdxb3KhRI3Mo5+HDh837P/nkEzVq1EhPPfWUOSy4X79+5nq9VXrr+JNPPtFDDz2kfv366Z577lG/fv3Utm1bvf/+++bzmzdvrg4dOui+++5Tq1atVKxYMY0cOVJ+fn7q3r27Tp06JSnjtl69erWCg4PN4c+vvfZamvtKVpQsWdImcKemdu3acnd3N7fxH374QfXr15enp2eaz+nSpYvq16+vV155RdOnT9fYsWNVoUIFSUnfYWPHjlVQUJC53Tg7O+vrr7/WiRMndOjQIU2ZMkVVqlRRhw4d1KtXrww/x53uU3fddZemT5+uoKAglS9fXo8//rh8fX114sQJGYahlStX6plnnlGLFi3k5+enV155RYGBgXJzc7P5vryVYRj6+OOPNXLkSLVu3Vp+fn6aOnWqXFxc9OWXX5qPe+qppxQUFKTAwEA9/vjj5jadkevXr6fYFtzc3MxQXqRIkQz3xw8++MBcbzVr1tRDDz0kLy8vvfPOO3J2dtb169f18ccf69VXX1WtWrXk7++vWbNm6eTJkzp48KDNa507d07btm3TrFmzVLVqVdWoUUMzZ87UN998o3/++UdbtmxR0aJFNXnyZN1777165JFHNH78eCUmJqb4O5jRvrpq1Sr16dNHLVu2VLVq1TRlypQUn61ChQpydXU1DwgBuSFvZwQA8qHNmzfL2dlZLVq0kCTVqlVLpUuX1vr161MMEcpOJ0+elL+/vzlsTEoabpj8RzIsLEzHjx+3OVpotVpTnKMiSWfOnFFiYqJq1apl3ufj46N77rlHYWFhevDBBzNdX4kSJWx+pHt5eZnDTMPCwjRnzhybIUbx8fG6++67U30dSXd8ZLNjx456/vnnFR8fr59++klFihRRgwYNUn1sREREiiGjkuTu7q7q1aurevXq+vfff7VixQr1798/w/dO7vlN/lHTtm1brVy5Uj/88INat26tkydPqmLFijah4NFHH83wdd3c3NSmTRt98803atGihbZu3arWrVvL3d1dYWFhioqKMif/kZJ+uFmtVv399982r1OsWDE9+OCD2rJlixo3bqwtW7YoODjYZtu63eLFi1W2bFn9888/mjJliqpVq6YhQ4aYw6ZOnTqlkydP2vR2JiYmKj4+XvHx8QoLC1P37t3NZU5OTho3bpx5u1y5chl+fntktB7CwsJshom5urpmadjYpk2bFBISov79++uxxx6z+3n16tXTr7/+qsuXL+vEiRNmqGvYsKEWL16shIQE/f7772bv4KlTp/Tjjz/arNebN2+mehAmvXUcFhamHj162Dy+Tp06WrVqlXk7OdhISdt+2bJlbW4nf9dktq1LliyZbe1rLycnJ7Vs2VLbt29X06ZNUx3CmZopU6bo4Ycf1v3332+ewxsTE6N///1XY8eONYcfSklD4c+cOSN3d3cVK1bMZsKPGjVq6Ouvv073ve50n2rcuLGOHDmiN998U2FhYQoNDVV4eLgSExN15coVXb582eaAYMWKFfXcc8+lW1NERIQiIyNt/ja4urqqRo0aCgsLs3mtZMWKFbN7tuBbt6Nk8fHxmTpfsHv37urXr5/i4+O1YsUK7d69W88++6y5jZ0/f15WqzXFjKxxcXE6ffq0zd+dsLAwGYahli1bpnifM2fO6OTJk6patarN0NrevXunWldG+2pYWJiGDh1qLvP395e7u7vNazg5Oal48eKKiIiwd3UAd4ywB9wmuYfm1skTEhMTtWPHDl2+fDlb3yt5mF2y24eguLq6mn84ExISNHDgQHXt2tXmMakdUb/9D8yt73f7e9rr1h9Bt9ebkJCgkJAQPfDAAzbLUzvK7ubmpoCAAP366696+OGHUyyfOnWq/P391bNnz3Tradq0qVxcXLR7925t3bpVHTp0SLXG5NpvncXt7Nmz+uuvv9SkSRPzPj8/vxSz+6Xm5MmTOn78uE6cOKH777/fZtm6devUunXrVIeS2is4OFhjx47V5MmTtW3bNr322muSkn5UVKpUKdXzo1IL1R07dtTLL7+sF154QTt37tTKlSvTfd+yZcuqUqVKqlSpkpYsWaJOnTpp5syZmjRpkvn+DRs21KuvvpriuS4uLhl+5rS2yWT2bpeZXQ+SMt0eq1ev1ssvv6x+/frZBFZ7NGjQQBs3btT+/ft13333mT8EGzVqpBdeeEH79+8394HkzxMcHKzhw4fbvE5q23J6nyO19ZuYmGizXm+fsCKt/SWjtpZS/67Kba1bt9a0adMUEhKin376SRMnTlRsbGy6zwkLC1NiYqJOnTqlS5cu6a677jLX0Zw5c8zhusm8vLz0888/p/i89syee6f71OrVq/X666+rW7duatu2rUJCQtS3b19JWV/f9v5tuP317T3v9a677lJ4eLjNff/991+mete9vb1VqVIlSdKrr76qwYMHa8iQIdqwYYO8vb3NOlesWJGil71kyZI2BxITEhLk6emZ6nmwvr6+Kc77TI89++rt6ym1SWISEhLy3eQxcGwM4wRucebMGf3+++968cUXtX79evPfO++8I6vVqk2bNqXoHUmvt+T2Za6urjbnRZw/f978/ypVqig0NNTmCOqtk37cc889On/+vPnjoVKlSvryyy+1bdu2FO9bsWJFubi46MiRI+Z9V65c0dmzZ81zHrLTPffco3///demtqVLl2rfvn2pPr5Tp05au3atIiMjbe4PCwvTypUr5eHhkeI5t69LFxcXtWvXTt99951+/PHHdM9HK1WqlE2Q27dvn5577jmbI9B//PGHXetmw4YNKlasmM32sX79evXo0UM7duzQlStXVLlyZZ0/f96mrefPn2/XNROTh4YuX75cN2/eNM81TF7HPj4+5joODw/Xm2++meoPsebNm8tqteq9995TuXLlVLVq1QzfO1nFihU1atQoffLJJzp8+LD5/mfOnFG5cuXM9w8NDdV7770nJycnVapUKcWstR06dEhzEqH09oX0ZLQeqlSpYjPkLCEhQceOHbP7s2/btk2TJk3S008/rZCQELufl6xOnTr6999/zQmDkpUuXVqVKlXS6tWrzfP1kj/PmTNnbPadXbt2pXoubXrr2M/Pz2Z/l5Imgrnnnnsy/Rkyauvb13F0dLTd7ZedmjZtqsuXL+uTTz5RlSpVMhwuHxMTo1dffVWjR49W9erVNXXqVElJ4aJUqVIKDw83P2/58uU1Z84cHTt2TP7+/oqJiTGHuUpKMSFTRrKyT3322WcaOnSoXnrpJXXu3FklSpRQRESEDMOQl5eXSpYsaVPHmTNn1KRJE0VGRqb5d8nLy0u+vr4224rVatUff/yRpW3ldrVq1dKhQ4fM7yTDMHTo0KF0h5Cnx2KxaMqUKYqKitKbb74pKamH2tnZWVeuXDHXW8mSJTV9+nRzErJk99xzj2JjY5WQkGA+VpKmT5+u6OhoVapUSceOHbM5GPjiiy/ajFK59bXS21dv3y/Onj2b4uBDYmKioqKiVKpUqSytDyArCHvALTZu3Chvb289/vjj8vf3N/+1aNFCderU0bp16+Tp6anw8HDzx42np6f+/vvvVCcouH1ZYGCgli1bpjNnzuj777+3uehtcHCw4uLiNHXqVJ06dUrvvvuu+aNAkvr166etW7dq+fLlOnv2rD777DMtWbLEZrjNre/bq1cvvfbaa9q7d6+OHTumcePG6a677jJnusyIp6enTpw4oWvXrmX42P79+2vFihVat26dzp07p4ULF2rNmjVphqfevXurXLly6tOnj3bs2KHz58/rm2++0eDBg9WwYUN16NAh1XpuXe9SUu/Vl19+qaJFi6Y6nDXZ/fffb/ODv23btnJxcdHkyZN1+vRpffnll1q2bJmGDRsmKSkghIeHpzrTZfJsiFWrVrXZRgYMGKCbN29q06ZNeuCBB3T33Xdr4sSJCgsL086dO7VixQrznLyiRYvq1KlTKcKulHQkuF27dlq8eLHatGljHmF/4IEHVKFCBY0dO1ZHjx7VoUOHNHHiRDk5OaV6tD55SOiyZcv0yCOPpLlu0tK3b1/5+flpypQpSkxM1KOPPqr4+HjzM/3000+aMmWKihcvbj5+8+bNWr16tc6ePavZs2fr6tWraU5yExgYqM8//1zHjx/Xvn37zPMlU1O0aFGdO3dOERERGa6H7t27688//9TChQt16tQpTZ8+Xf/++6/5WvHx8QoPD0+1JzE2NlaTJk3Sgw8+qN69eys8PNz8l7wtREZGprtPeHp6qlq1atq8ebMaN25ss6xRo0b67rvvbK6v98QTTyg0NFRvvvmmzpw5o61bt+qNN97QXXfdlWqbpLWO+/Xrp23btmn58uU6c+aMli9frm3btqV58fH0ZNTWTz75pL755ht9/vnnCgsL08SJE21mDr5x40aK3p3MuHz5smJiYjJ8nLu7u5o2baoFCxbYNYRz3rx5cnNz04ABA/Tyyy9rx44d5iRY/fr101tvvaVvv/1WZ8+e1auvvqrdu3fr3nvvlZ+fnxo3bqwJEybo6NGj+vbbb/XZZ59l+nNldp8qUaKE9uzZo1OnTun333/XmDFjZLVazW2xb9++WrBggX766SeFhYVpypQpuv/+++Xj45Pq92WyAQMGaOHChfruu+8UFhaml19+WXFxcXZ/T6TXPu3bt1dsbKymTp2qkydPmqEq+Ts9K9tG2bJlNWTIEK1atUp//vmnihUrpu7du2vq1Knas2ePwsLCFBISouPHj6ty5co2z/Xz81OzZs00btw4HTlyREePHlVISIgiIiJUunRpPfroo4qJidHrr7+u06dPa+PGjdq4caP5d/LWv4MZ7atPPvmkPv74Y23ZskXHjx83v5dudfLkSUlStWrVMrUOgDtiADC1b9/eeOWVV1Jdtn79esPf3984duyY0aZNG6NmzZrGf//9Zxw5csRo2rSp0bBhQyMxMdHw9/c3fvrpJ8MwjBTL/vjjD6NLly5G9erVjZ49exqrVq0ymjVrZr7H77//bnTr1s0IDAw0BgwYYISEhBghISHm8k2bNhkPP/ywUb16daNt27bGunXr0vws169fN1599VWjYcOGRu3atY3hw4cbf//9t7m8d+/expw5c9J8/rx584zAwEDj9ddfN9asWWNTZ2rP/+ijj4xWrVoZNWrUMB599FFjx44dab62YRhGVFSUMWPGDKNVq1ZGYGCg8dBDDxlz5swxYmJizMe0bNnSWLVqlWEYhnH+/Hmb9W4YhpGYmGg0b97cmDt3brrvtXr1aqNr16429x07dszo3bu3UatWLaNVq1bm+yS/l7+/v7F3716b5xw+fNjw9/c3jhw5kur7PPXUU0aXLl0MwzCMU6dOGf369TMCAwONBx980Fi2bJn5uM8++8yoXbu2MXLkSGPv3r2Gv7+/YbVazeX79+83/P39jd27d9u8/rlz54whQ4YYtWrVMho2bGi89NJLxrVr1wzDMFJto127dhn+/v7GmTNn0lw3yZ81tcfs3r3b8Pf3Nz777DPDMAzjjz/+MHr37m0EBgYaTZs2NWbNmmVT99q1a43WrVsbgYGBRs+ePY3ffvvNMAzDmD9/vtGrV68U79u7d2+jevXqxiOPPGJs2bLFXA+317R9+3ajQYMG5rpNbz0kf+7g4GAjMDDQeO6554zBgwcb8+fPNwzDMNf3+fPnU3ze7du3G/7+/qn+S96ne/fubbNPpmbGjBlGQECAceXKFZv7N27caPj7+xuhoaEp1nPXrl2N6tWrGw8++KDx/vvvm8tCQkKM559/PsN1bBiGsXnzZqN9+/bmOv3666/NZbfvr3PmzDF69+5t3t65c6dRrVo183ZGbf3VV18ZrVq1MmrXrm28/vrrxqOPPmqsWbPGMIykbdHf3z/ddZTs1n381vuS2+t2t2/nye+V3J63bzvJr3/kyBGjWrVqxq5du8znzpo1y2jatKkRFRVl3Lx505g3b57xwAMPGDVr1jR69uxps59fvnzZGDFihFGrVi2jQ4cOxvz5842WLVumWmN27VMnT540evbsadSsWdNo0aKFMWPGDGPUqFHGiy++aBiGYVitVmPGjBlGo0aNjLp16xqjR482vxtv/768dT0nJCQYb731ltG0aVOjZs2aRt++fY1jx46ZNd66vae2ztNrH8NI+rvXuXNno0aNGsZjjz1ms41mtG2k9XcpLi7OeOihh4yePXsaiYmJ5t+3Ro0aGbVr1zYGDBhgnDp1KtX1HxERYTz33HNG3bp1jXr16hmjRo0yLl26ZL724cOHje7duxs1atQw2rZta3z11Vfmslv/Dia3X1r7qmEYxrJly4ymTZsa9evXN95//32jXr16Nn9HPv30U+PJJ59M8/MDOcFiGPn4qs8AkI7r16+rSZMm+uKLL1KdbTNZTEyMWrZsqdWrV5vDeAqD9evX65NPPkl1VtTCLCQkRGPHjs0XF7N3VAMGDNDSpUvzugzkgL179+rXX3/V008/ndelpOrs2bNq27atvv/+e5tJiPKD3r17q0ePHnZN2AVkF4ZxAiiQtm7dqsmTJ6tq1arpBj0paRhg7969C83FbM+fP6/Nmzdr0aJFKWZoLOzOnTuny5cvE/Ry0IEDB9KcLAcF34oVK1Kd3TI/uHjxon788Ue5urradcmj3HTy5EldvHgx1dMUgJxEzx6AAqldu3a6efOm3n77bbum1r9x44Z69OihDz74wOF/6O/Zs0fDhg1T8+bNNXfuXGZ+u4VhGEpISLBrNkVkzc2bN+Xs7Jzu5FUouKxWa57MvmqPmTNnatWqVerXr59GjRqV1+XYeOaZZ/TYY4+Z524DuYWwBwAAAAAOiGGcAAAAAOCACHsAAAAA4IAIewAAAADggAh7AAAAAOCACHsAAAAA4IAIewAAAADggP4fCvVPTWSqGDAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1080x720 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (15, 10))\n",
    "plt.ylabel(\"Trade Route Distance (km)\",  fontsize = 14)\n",
    "plt.xlabel(\"Attitude of the City (3: Actively Recruited, 2: Welcomed, 1: Mixed Reaction, 0: Rejected)\", fontsize = 14)\n",
    "plt.title(\"Distribution of Trade Route Distance by Huguenot Acceptance\",  fontsize = 16)\n",
    "sns.scatterplot(x = 'city_att', y = 'tr_distance', data = df)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0192e05e",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "ac2a0824",
   "metadata": {},
   "source": [
    "Regressions Run:\n",
    "\n",
    "1) Dependent Variable: indicator for whether or not ruler attitude was a 3\n",
    "\n",
    "   Independent Variable: distance to nearest trade route in km\n",
    "   \n",
    "2) Dependent Variable: indicator for whether or not ruler attitude was a 3\n",
    "\n",
    "   Independent Variables: Population Loss Indicator Variable (0 for under 40%, 1 for over 40%)\n",
    "   \n",
    "3) Dependent Variable: indicator for whether or not ruler attitude was a 3\n",
    "\n",
    "   Independent Variable: distance to nearest trade route in km and population loss indicator variable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "77b8c9e2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimization terminated successfully.\n",
      "         Current function value: 0.668146\n",
      "         Iterations: 6\n",
      "         Function evaluations: 9\n",
      "         Gradient evaluations: 9\n",
      "                           Logit Regression Results                           \n",
      "==============================================================================\n",
      "Dep. Variable:        three_ruler_att   No. Observations:                   53\n",
      "Model:                          Logit   Df Residuals:                       51\n",
      "Method:                           MLE   Df Model:                            1\n",
      "Date:                Thu, 02 Sep 2021   Pseudo R-squ.:                0.004923\n",
      "Time:                        11:34:25   Log-Likelihood:                -35.412\n",
      "converged:                       True   LL-Null:                       -35.587\n",
      "Covariance Type:            nonrobust   LLR p-value:                    0.5539\n",
      "===============================================================================\n",
      "                  coef    std err          z      P>|z|      [0.025      0.975]\n",
      "-------------------------------------------------------------------------------\n",
      "const           0.2857      0.361      0.790      0.429      -0.423       0.994\n",
      "tr_distance     0.0137      0.024      0.581      0.561      -0.033       0.060\n",
      "===============================================================================\n",
      "Optimization terminated successfully.\n",
      "         Current function value: 0.634507\n",
      "         Iterations: 10\n",
      "         Function evaluations: 11\n",
      "         Gradient evaluations: 11\n",
      "                           Logit Regression Results                           \n",
      "==============================================================================\n",
      "Dep. Variable:        three_ruler_att   No. Observations:                   59\n",
      "Model:                          Logit   Df Residuals:                       57\n",
      "Method:                           MLE   Df Model:                            1\n",
      "Date:                Thu, 02 Sep 2021   Pseudo R-squ.:                 0.07519\n",
      "Time:                        11:34:25   Log-Likelihood:                -37.436\n",
      "converged:                       True   LL-Null:                       -40.479\n",
      "Covariance Type:            nonrobust   LLR p-value:                   0.01362\n",
      "================================================================================\n",
      "                   coef    std err          z      P>|z|      [0.025      0.975]\n",
      "--------------------------------------------------------------------------------\n",
      "const           -0.4354      0.387     -1.125      0.261      -1.194       0.323\n",
      "ind_pop_loss     1.3291      0.553      2.402      0.016       0.244       2.414\n",
      "================================================================================\n",
      "Optimization terminated successfully.\n",
      "         Current function value: 0.577867\n",
      "         Iterations: 13\n",
      "         Function evaluations: 16\n",
      "         Gradient evaluations: 16\n",
      "                           Logit Regression Results                           \n",
      "==============================================================================\n",
      "Dep. Variable:        three_ruler_att   No. Observations:                   51\n",
      "Model:                          Logit   Df Residuals:                       48\n",
      "Method:                           MLE   Df Model:                            2\n",
      "Date:                Thu, 02 Sep 2021   Pseudo R-squ.:                  0.1471\n",
      "Time:                        11:34:25   Log-Likelihood:                -29.471\n",
      "converged:                       True   LL-Null:                       -34.552\n",
      "Covariance Type:            nonrobust   LLR p-value:                  0.006214\n",
      "================================================================================\n",
      "                   coef    std err          z      P>|z|      [0.025      0.975]\n",
      "--------------------------------------------------------------------------------\n",
      "const           -0.9182      0.562     -1.635      0.102      -2.019       0.183\n",
      "tr_distance      0.0305      0.026      1.157      0.247      -0.021       0.082\n",
      "ind_pop_loss     1.9705      0.665      2.963      0.003       0.667       3.274\n",
      "================================================================================\n"
     ]
    }
   ],
   "source": [
    "df = pd.read_csv(\"Huguenots_Coding.csv\")\n",
    "df = df[df['tr_distance'].notna()]\n",
    "df = df[df['three_ruler_att'].notna()]\n",
    "\n",
    "reg = sm.Logit(df[\"three_ruler_att\"], sm.add_constant(df[[\"tr_distance\"]]), distr = \"logit\").fit(method = \"bfgs\")\n",
    "print(reg.summary())\n",
    "\n",
    "df = pd.read_csv(\"Huguenots_Coding.csv\")\n",
    "df = df[df['pop_loss'].notna()]\n",
    "df = pd.get_dummies(df, columns = [\"pop_loss\"])\n",
    "df = df[df['three_ruler_att'].notna()]\n",
    "\n",
    "reg = sm.Logit(df[\"three_ruler_att\"], sm.add_constant(df[[\"ind_pop_loss\"]]), distr = \"logit\").fit(method = \"bfgs\")\n",
    "print(reg.summary())\n",
    "\n",
    "df = pd.read_csv(\"Huguenots_Coding.csv\")\n",
    "df = df[df['pop_loss'].notna()]\n",
    "df = pd.get_dummies(df, columns = [\"pop_loss\"])\n",
    "df = df[df['tr_distance'].notna()]\n",
    "df = df[df['three_ruler_att'].notna()]\n",
    "\n",
    "reg = sm.Logit(df[\"three_ruler_att\"], sm.add_constant(df[[\"tr_distance\", \"ind_pop_loss\"]]), distr = \"logit\").fit(method = \"bfgs\")\n",
    "print(reg.summary())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "08873bef",
   "metadata": {},
   "source": [
    "Contingency Tables and Chi-Squared Test on City Attitude vs Population Loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d90e9f15",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ind_pop_loss    0.0  1.0\n",
      "three_city_att          \n",
      "0.0              26   20\n",
      "1.0               3    9\n",
      "\n",
      "Test Statistic: 2.6268115942028984\n",
      "\n",
      "P-Value: 0.10507252114362793\n"
     ]
    }
   ],
   "source": [
    "df = pd.read_csv(\"Huguenots_Coding.csv\")\n",
    "table = pd.crosstab(df['three_city_att'], df['ind_pop_loss'], margins = False)\n",
    "print(table)\n",
    "\n",
    "stat, p, dof, expected = scipy.stats.chi2_contingency(table)\n",
    "print(\"\\nTest Statistic: \" + str(stat))\n",
    "print(\"\\nP-Value: \" + str(p))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "25e768a1",
   "metadata": {},
   "source": [
    "Contigency Tables and Chi-Squared Test on City Attitude vs Population Loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "b1696914",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ind_pop_loss     0.0  1.0\n",
      "three_ruler_att          \n",
      "0.0               17    9\n",
      "1.0               11   22\n",
      "\n",
      "Test Statistic: 4.774720910809619\n",
      "\n",
      "P-Value: 0.028880527280955904\n"
     ]
    }
   ],
   "source": [
    "df = pd.read_csv(\"Huguenots_Coding.csv\")\n",
    "table = pd.crosstab(df['three_ruler_att'], df['ind_pop_loss'], margins = False)\n",
    "print(table)\n",
    "\n",
    "stat, p, dof, expected = scipy.stats.chi2_contingency(table)\n",
    "print(\"\\nTest Statistic: \" + str(stat))\n",
    "print(\"\\nP-Value: \" + str(p))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2ee53374",
   "metadata": {},
   "source": [
    "Calculating Correlation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "ceb75503",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Correlation Coefficient :-0.16533227518223814\n"
     ]
    }
   ],
   "source": [
    "df = pd.read_csv(\"Huguenots_Coding.csv\")\n",
    "df = df[df['pop_loss'].notna()]\n",
    "df = df[df['tr_distance'].notna()]\n",
    "corr, _ = scipy.stats.pearsonr(df[\"ind_pop_loss\"], df[\"tr_distance\"])\n",
    "print(\"Correlation Coefficient :\" + str(corr))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "34809473",
   "metadata": {},
   "source": [
    "Now using all available pop loss categories"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "98f95bd7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimization terminated successfully.\n",
      "         Current function value: 0.429723\n",
      "         Iterations: 47\n",
      "         Function evaluations: 48\n",
      "         Gradient evaluations: 48\n",
      "                           Logit Regression Results                           \n",
      "==============================================================================\n",
      "Dep. Variable:         three_city_att   No. Observations:                   58\n",
      "Model:                          Logit   Df Residuals:                       52\n",
      "Method:                           MLE   Df Model:                            5\n",
      "Date:                Thu, 02 Sep 2021   Pseudo R-squ.:                  0.1571\n",
      "Time:                        11:39:35   Log-Likelihood:                -24.924\n",
      "converged:                       True   LL-Null:                       -29.569\n",
      "Covariance Type:            nonrobust   LLR p-value:                   0.09802\n",
      "===================================================================================\n",
      "                      coef    std err          z      P>|z|      [0.025      0.975]\n",
      "-----------------------------------------------------------------------------------\n",
      "const              -1.2040      0.658     -1.829      0.067      -2.494       0.086\n",
      "pop_loss_0%        -0.4052      1.016     -0.399      0.690      -2.398       1.587\n",
      "pop_loss_10-20%   -14.7268    959.873     -0.015      0.988   -1896.043    1866.590\n",
      "pop_loss_20-30%     0.5113      1.390      0.368      0.713      -2.214       3.236\n",
      "pop_loss_30-40%   -12.2047    364.904     -0.033      0.973    -727.403     702.994\n",
      "pop_loss_40-50%     0.6931      0.837      0.828      0.407      -0.947       2.333\n",
      "===================================================================================\n",
      "\n",
      "Possibly complete quasi-separation: A fraction 0.24 of observations can be\n",
      "perfectly predicted. This might indicate that there is complete\n",
      "quasi-separation. In this case some parameters will not be identified.\n"
     ]
    }
   ],
   "source": [
    "df = pd.read_csv(\"Huguenots_Coding.csv\")\n",
    "df = df[df['pop_loss'].notna()]\n",
    "df = pd.get_dummies(df, columns = [\"pop_loss\"])\n",
    "df = df[df['three_city_att'].notna()]\n",
    "\n",
    "reg = sm.Logit(df[\"three_city_att\"], sm.add_constant(df[[\"pop_loss_0%\", \"pop_loss_10-20%\", \"pop_loss_20-30%\", \"pop_loss_30-40%\", \"pop_loss_40-50%\"]]), distr = \"logit\").fit(method = \"bfgs\", maxiter = 100000)\n",
    "print(reg.summary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "01cf28de",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimization terminated successfully.\n",
      "         Current function value: 0.612392\n",
      "         Iterations: 37\n",
      "         Function evaluations: 38\n",
      "         Gradient evaluations: 38\n",
      "                           Logit Regression Results                           \n",
      "==============================================================================\n",
      "Dep. Variable:        three_ruler_att   No. Observations:                   59\n",
      "Model:                          Logit   Df Residuals:                       53\n",
      "Method:                           MLE   Df Model:                            5\n",
      "Date:                Thu, 02 Sep 2021   Pseudo R-squ.:                  0.1074\n",
      "Time:                        11:39:46   Log-Likelihood:                -36.131\n",
      "converged:                       True   LL-Null:                       -40.479\n",
      "Covariance Type:            nonrobust   LLR p-value:                    0.1218\n",
      "===================================================================================\n",
      "                      coef    std err          z      P>|z|      [0.025      0.975]\n",
      "-----------------------------------------------------------------------------------\n",
      "const               0.4055      0.527      0.769      0.442      -0.628       1.438\n",
      "pop_loss_0%        -0.4055      0.823     -0.493      0.622      -2.019       1.208\n",
      "pop_loss_10-20%    -1.2528      0.868     -1.443      0.149      -2.955       0.449\n",
      "pop_loss_20-30%    -1.0985      1.333     -0.824      0.410      -3.712       1.515\n",
      "pop_loss_30-40%    -0.8111      1.054     -0.769      0.442      -2.877       1.255\n",
      "pop_loss_40-50%     1.0609      0.829      1.279      0.201      -0.565       2.687\n",
      "===================================================================================\n"
     ]
    }
   ],
   "source": [
    "df = pd.read_csv(\"Huguenots_Coding.csv\")\n",
    "df = df[df['pop_loss'].notna()]\n",
    "df = pd.get_dummies(df, columns = [\"pop_loss\"])\n",
    "df = df[df['three_ruler_att'].notna()]\n",
    "\n",
    "reg = sm.Logit(df[\"three_ruler_att\"], sm.add_constant(df[[\"pop_loss_0%\", \"pop_loss_10-20%\", \"pop_loss_20-30%\", \"pop_loss_30-40%\", \"pop_loss_40-50%\"]]), distr = \"logit\").fit(method = \"bfgs\", maxiter = 100000)\n",
    "print(reg.summary())"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
